#include <stdio.h>
#include <string.h>

// 复杂对象 -- 结构体  -  我们自己创造出来的一种类型
// 创建一个结构体类型
struct Book{
    char name[20];
    int price;
}; // 这个 ;  是必须的

struct Student{
    char name[20];
    int price;
} Student_s;

struct {
    char name[20];
    int sex;
} teacher={"老师",22};

int main()
{   
    // 利用结构体类型，创建一个该类型的结构体变量
    struct Book b1 = {"C语言程序设计", 55};

    // . 操作符。   结构体变量.成员 
    printf("书名：%s \n",b1.name);
    printf("价格：%d \n",b1.price);

    // 修改结构体的内容
    // b1.name = "c++"; // 这里不能修改b1的name，因为name是一个数组名; 如果想修改名字只能使用strcpy
    strcpy(b1.name,"c++"); // strcpy - string copy - 字符串拷贝 - 是一个库函数在string.h中
    b1.price = 20; // 这里可以修改，price是一个变量
    printf("价格（打折后）：%d \n",b1.price);

    // 通过加 * ，表明此处pb是b1的地址
    struct Book* pb = &b1;
    printf("b1的地址：%p \n",pb);
    printf("通过地址获取书名1：%s \n",(*pb).name);
    printf("通过地址获取价格1：%d \n",(*pb).price);

    // -> 操作符。  结构体指针->成员
    // pb->name pb指向对象的name。
    printf("通过地址获取书名2：%s \n",pb->name);
    printf("通过地址获取价格2：%d \n",pb->price);

    return 0;
}

